////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __WN_MATH_LINE_2_H__
#define __WN_MATH_LINE_2_H__

#include "WNCore/inc/WNTypes.h"
#include "WNMath/inc/WNPoint2.h"

namespace WNMath {
    class WNVector2;

    class WNLine2 {
    public:
        WNLine2();
        explicit WNLine2(const WN_FLOAT32* _f);
        explicit WNLine2(const WNPoint2& _point1, const WNPoint2& _point2);

        WNLine2 operator + () const;
        WNLine2 operator - () const;

        WN_BOOL operator == (const WNLine2& _line) const;
        WN_BOOL operator != (const WNLine2& _line) const;

        WN_VOID Zero();

        WNVector2 Direction() const;

        WN_VOID Set(const WN_FLOAT32* _f);
        WN_VOID Set(const WNPoint2& _point1, const WNPoint2& _point2);

    public:
        WNPoint2 mPoint1;
        WNPoint2 mPoint2;
    };
}

#endif // __WN_MATH_LINE_2_H__